import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src')
    }
  },
  server: {
    port: 3200,
    open: true,
    proxy: {
      '/api': {
        target: 'http://iseeyou1.icu:7200',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  },
  build: {
    // 提高 chunk 大小警告阈值（Naive UI 本身较大）
    chunkSizeWarningLimit: 1500,
    rollupOptions: {
      output: {
        // 代码分割策略
        manualChunks: {
          // Vue 核心库
          'vue-vendor': ['vue', 'vue-router', 'pinia'],
          // Naive UI 单独分离
          'naive-ui': ['naive-ui'],
          // 工具库和图标库
          'vendor': ['axios']
        },
        // 优化资源命名
        chunkFileNames: 'js/[name]-[hash].js',
        entryFileNames: 'js/[name]-[hash].js',
        assetFileNames: (assetInfo) => {
          // 根据文件类型分类存放
          const info = assetInfo.name.split('.')
          const ext = info[info.length - 1]
          if (/\.(png|jpe?g|gif|svg|webp|ico)$/i.test(assetInfo.name)) {
            return `images/[name]-[hash].${ext}`
          }
          if (/\.(woff2?|eot|ttf|otf)$/i.test(assetInfo.name)) {
            return `fonts/[name]-[hash].${ext}`
          }
          return `assets/[name]-[hash].${ext}`
        }
      }
    },
    // 压缩配置 - 使用 esbuild（更快）
    minify: 'esbuild',
    esbuild: {
      // 生产环境移除 console 和 debugger
      drop: ['console', 'debugger']
    }
  }
})
